﻿// Utilities/LanguageManager.cs - 修复版本

using System;
using System.Collections.Generic;
using System.Web;
using System.Linq;

namespace WebApplication1.Utilities
{
    public static class LanguageManager
    {
        // 中文资源字典
        private static readonly Dictionary<string, string> ChineseResources = new Dictionary<string, string>
        {
            // 系统通用
            {"ExamSystem", "考试系统"},
            {"ExamTitle", "考试系统"},
            {"Welcome", "欢迎"},
            {"Login", "登录"},
            {"Logout", "退出"},
            {"UserName", "用户名"},
            {"Password", "密码"},
            {"Submit", "提交"},
            {"Cancel", "取消"},
            {"Save", "保存"},
            {"Edit", "编辑"},
            {"Delete", "删除"},
            {"Create", "创建"},
            {"Search", "搜索"},
            {"Reset", "重置"},
            {"Confirm", "确认"},
            {"Back", "返回"},
            {"Next", "下一页"},
            {"Previous", "上一页"},
            {"Finish", "完成"},
            {"Close", "关闭"},
            {"OK", "确定"},
            {"Yes", "是"},
            {"No", "否"},
            {"Continue", "继续"},
            {"Exit", "退出"},
            
            // 考试相关
            {"ActiveExams", "活动考试"},
            {"TakeExam", "参加考试"},
            {"MyExamResults", "我的考试成绩"},
            {"ExamResult", "考试结果"},
            {"ExamName", "考试名称"},
            {"Description", "描述"},
            {"Duration", "时长"},
            {"Minutes", "分钟"},
            {"StartTime", "开始时间"},
            {"EndTime", "结束时间"},
            {"TotalScore", "总分"},
            {"Score", "分数"},
            {"Question", "题目"},
            {"Questions", "题目"},
            {"QuestionType", "题型"},
            {"Options", "选项"},
            {"CorrectAnswer", "正确答案"},
            {"YourAnswer", "您的答案"},
            {"Result", "结果"},
            {"Pass", "合格"},
            {"Fail", "不合格"},
            {"Percentage", "百分比"},
            {"Explanation", "解析"},
            {"ExamNotFound", "未找到考试"},
            {"ExamTimeUp", "考试时间到"},
            {"ExamCompleted", "考试已完成"},
            
            // 题型
            {"SingleChoice", "单选题"},
            {"MultipleChoice", "多选题"},
            {"TrueFalse", "判断题"},
            {"FillBlank", "填空题"},
            {"True", "正确"},
            {"False", "错误"},
            
            // 面板
            {"EmployeeDashboard", "员工面板"},
            {"AdminDashboard", "管理员面板"},
            {"Dashboard", "面板"},
            
            // 时间
            {"Seconds", "秒"},
            {"Hours", "小时"},
            {"Days", "天"},
            {"TimeRemaining", "剩余时间"},
            
            // 消息
            {"WelcomeMessage", "欢迎使用考试系统"},
            {"LoginMessage", "请输入您的登录信息"},
            {"Success", "成功"},
            {"Error", "错误"},
            {"Warning", "警告"},
            {"Info", "信息"},
            {"NoData", "暂无数据"},
            {"NoExams", "暂无考试"},
            {"NoResults", "暂无成绩"},
            
            // 操作相关
            {"ViewDetails", "查看详情"},
            {"ViewResult", "查看结果"},
            {"StartExam", "开始考试"},
            {"ReturnToList", "返回列表"},
            {"Review", "回顾"},
            {"Retake", "重新考试"},
            
            // 状态
            {"Active", "激活"},
            {"Inactive", "未激活"},
            {"Pending", "待处理"},
            {"Completed", "已完成"},
            {"InProgress", "进行中"},
            
            // 表单相关
            {"Required", "必填"},
            {"Optional", "可选"},
            {"SelectOption", "请选择"},
            {"NoOptions", "无选项"},
            {"FillAnswer", "请填写答案"},
            
            // 数量相关
            {"Total", "总计"},
            {"Count", "数量"},
            {"Average", "平均"},
            
            // 考试界面
            {"QuestionNumber", "第 {0} 题"},
            {"OutOf", "共 {0} 题"},
            {"CurrentQuestion", "当前题目"},
            {"AnswerSheet", "答题卡"},
            {"TimeLimit", "考试时长"},
            {"TimeUsed", "已用时间"},
            {"SubmitExam", "提交试卷"},
            {"AreYouSure", "您确定要提交试卷吗？"},
            {"ExamInstructions", "考试说明"},
            
            // 其他
            {"System", "系统"},
            {"Settings", "设置"},
            {"Profile", "个人资料"},
            {"ChangePassword", "修改密码"},
            {"Language", "语言"},
            {"Theme", "主题"},
            {"Help", "帮助"},
            {"About", "关于"},
            
            // 分数相关
            {"FullScore", "满分"},
            {"YourScore", "您的得分"},
            {"PassingScore", "及格分数"},
            {"ScoreDetail", "得分详情"},
            
            // 选项标签
            {"OptionA", "选项 A"},
            {"OptionB", "选项 B"},
            {"OptionC", "选项 C"},
            {"OptionD", "选项 D"},
            {"OptionE", "选项 E"},
            {"OptionF", "选项 F"},
            
            // 提示信息
            {"Hint", "提示"},
            {"Note", "注意"},
            {"Important", "重要"},
            {"Tip", "小贴士"},
            
            // 按钮操作
            {"Add", "添加"},
            {"Remove", "移除"},
            {"Update", "更新"},
            {"Refresh", "刷新"},
            {"Print", "打印"},
            {"Export", "导出"},
            {"Import", "导入"},
            
            // 确认对话框
            {"ConfirmDelete", "确定要删除吗？"},
            {"ConfirmSubmit", "确定要提交吗？"},
            {"ConfirmExit", "确定要退出吗？"},
            
            // 状态消息
            {"Loading", "加载中..."},
            {"Processing", "处理中..."},
            {"Saving", "保存中..."},
            {"Submitting", "提交中..."},
            
            // 错误消息
            {"NetworkError", "网络错误"},
            {"ServerError", "服务器错误"},
            {"ValidationError", "验证错误"},
            {"PermissionDenied", "权限不足"},
            
            // 成功消息
            {"SaveSuccess", "保存成功"},
            {"SubmitSuccess", "提交成功"},
            {"DeleteSuccess", "删除成功"},
            {"UpdateSuccess", "更新成功"},
            
            // 警告消息
            {"TimeWarning", "考试即将结束，请尽快提交"},
            {"UnsavedWarning", "您有未保存的更改"},
            {"SessionExpire", "会话即将过期"}
        };

        // 越南文资源字典
        private static readonly Dictionary<string, string> VietnameseResources = new Dictionary<string, string>
        {
            // 系统通用
            {"ExamSystem", "Hệ thống thi"},
            {"ExamTitle", "Hệ thống thi"},
            {"Welcome", "Chào mừng"},
            {"Login", "Đăng nhập"},
            {"Logout", "Đăng xuất"},
            {"UserName", "Tên đăng nhập"},
            {"Password", "Mật khẩu"},
            {"Submit", "Gửi"},
            {"Cancel", "Hủy"},
            {"Save", "Lưu"},
            {"Edit", "Sửa"},
            {"Delete", "Xóa"},
            {"Create", "Tạo"},
            {"Search", "Tìm kiếm"},
            {"Reset", "Đặt lại"},
            {"Confirm", "Xác nhận"},
            {"Back", "Quay lại"},
            {"Next", "Tiếp theo"},
            {"Previous", "Trước đó"},
            {"Finish", "Hoàn thành"},
            {"Close", "Đóng"},
            {"OK", "Đồng ý"},
            {"Yes", "Có"},
            {"No", "Không"},
            {"Continue", "Tiếp tục"},
            {"Exit", "Thoát"},
            
            // 考试相关
            {"ActiveExams", "Kỳ thi hoạt động"},
            {"TakeExam", "Tham gia kỳ thi"},
            {"MyExamResults", "Kết quả thi của tôi"},
            {"ExamResult", "Kết quả thi"},
            {"ExamName", "Tên kỳ thi"},
            {"Description", "Mô tả"},
            {"Duration", "Thời lượng"},
            {"Minutes", "Phút"},
            {"StartTime", "Thời gian bắt đầu"},
            {"EndTime", "Thời gian kết thúc"},
            {"TotalScore", "Tổng điểm"},
            {"Score", "Điểm"},
            {"Question", "Câu hỏi"},
            {"Questions", "Các câu hỏi"},
            {"QuestionType", "Loại câu hỏi"},
            {"Options", "Các lựa chọn"},
            {"CorrectAnswer", "Đáp án đúng"},
            {"YourAnswer", "Câu trả lời của bạn"},
            {"Result", "Kết quả"},
            {"Pass", "Đạt"},
            {"Fail", "Không đạt"},
            {"Percentage", "Phần trăm"},
            {"Explanation", "Giải thích"},
            {"ExamNotFound", "Không tìm thấy kỳ thi"},
            {"ExamTimeUp", "Hết giờ thi"},
            {"ExamCompleted", "Kỳ thi đã hoàn thành"},
            
            // 题型
            {"SingleChoice", "Câu hỏi một lựa chọn"},
            {"MultipleChoice", "Câu hỏi nhiều lựa chọn"},
            {"TrueFalse", "Câu hỏi đúng/sai"},
            {"FillBlank", "Câu hỏi điền khuyết"},
            {"True", "Đúng"},
            {"False", "Sai"},
            
            // 面板
            {"EmployeeDashboard", "Bảng điều khiển nhân viên"},
            {"AdminDashboard", "Bảng điều khiển quản trị"},
            {"Dashboard", "Bảng điều khiển"},
            
            // 时间
            {"Seconds", "Giây"},
            {"Hours", "Giờ"},
            {"Days", "Ngày"},
            {"TimeRemaining", "Thời gian còn lại"},
            
            // 消息
            {"WelcomeMessage", "Chào mừng bạn đến với hệ thống thi"},
            {"LoginMessage", "Vui lòng nhập thông tin đăng nhập của bạn"},
            {"Success", "Thành công"},
            {"Error", "Lỗi"},
            {"Warning", "Cảnh báo"},
            {"Info", "Thông tin"},
            {"NoData", "Không có dữ liệu"},
            {"NoExams", "Không có kỳ thi"},
            {"NoResults", "Không có kết quả"},
            
            // 操作相关
            {"ViewDetails", "Xem chi tiết"},
            {"ViewResult", "Xem kết quả"},
            {"StartExam", "Bắt đầu thi"},
            {"ReturnToList", "Quay lại danh sách"},
            {"Review", "Xem lại"},
            {"Retake", "Thi lại"},
            
            // 状态
            {"Active", "Hoạt động"},
            {"Inactive", "Không hoạt động"},
            {"Pending", "Đang chờ"},
            {"Completed", "Đã hoàn thành"},
            {"InProgress", "Đang tiến hành"},
            
            // 表单相关
            {"Required", "Bắt buộc"},
            {"Optional", "Tùy chọn"},
            {"SelectOption", "Vui lòng chọn"},
            {"NoOptions", "Không có tùy chọn"},
            {"FillAnswer", "Vui lòng điền đáp án"},
            
            // 数量相关
            {"Total", "Tổng cộng"},
            {"Count", "Số lượng"},
            {"Average", "Trung bình"},
            
            // 考试界面
            {"QuestionNumber", "Câu hỏi {0}"},
            {"OutOf", "trên {0} câu"},
            {"CurrentQuestion", "Câu hỏi hiện tại"},
            {"AnswerSheet", "Phiếu trả lời"},
            {"TimeLimit", "Thời gian thi"},
            {"TimeUsed", "Thời gian đã dùng"},
            {"SubmitExam", "Nộp bài"},
            {"AreYouSure", "Bạn có chắc chắn muốn nộp bài không?"},
            {"ExamInstructions", "Hướng dẫn thi"},
            
            // 其他
            {"System", "Hệ thống"},
            {"Settings", "Cài đặt"},
            {"Profile", "Hồ sơ"},
            {"ChangePassword", "Đổi mật khẩu"},
            {"Language", "Ngôn ngữ"},
            {"Theme", "Giao diện"},
            {"Help", "Trợ giúp"},
            {"About", "Giới thiệu"},
            
            // 分数相关
            {"FullScore", "Điểm tối đa"},
            {"YourScore", "Điểm của bạn"},
            {"PassingScore", "Điểm đậu"},
            {"ScoreDetail", "Chi tiết điểm"},
            
            // 选项标签
            {"OptionA", "Lựa chọn A"},
            {"OptionB", "Lựa chọn B"},
            {"OptionC", "Lựa chọn C"},
            {"OptionD", "Lựa chọn D"},
            {"OptionE", "Lựa chọn E"},
            {"OptionF", "Lựa chọn F"},
            
            // 提示信息
            {"Hint", "Gợi ý"},
            {"Note", "Lưu ý"},
            {"Important", "Quan trọng"},
            {"Tip", "Mẹo"},
            
            // 按钮操作
            {"Add", "Thêm"},
            {"Remove", "Xóa"},
            {"Update", "Cập nhật"},
            {"Refresh", "Làm mới"},
            {"Print", "In"},
            {"Export", "Xuất"},
            {"Import", "Nhập"},
            
            // 确认对话框
            {"ConfirmDelete", "Bạn có chắc chắn muốn xóa không?"},
            {"ConfirmSubmit", "Bạn có chắc chắn muốn nộp không?"},
            {"ConfirmExit", "Bạn có chắc chắn muốn thoát không?"},
            
            // 状态消息
            {"Loading", "Đang tải..."},
            {"Processing", "Đang xử lý..."},
            {"Saving", "Đang lưu..."},
            {"Submitting", "Đang nộp..."},
            
            // 错误消息
            {"NetworkError", "Lỗi mạng"},
            {"ServerError", "Lỗi máy chủ"},
            {"ValidationError", "Lỗi xác thực"},
            {"PermissionDenied", "Không đủ quyền"},
            
            // 成功消息
            {"SaveSuccess", "Lưu thành công"},
            {"SubmitSuccess", "Nộp thành công"},
            {"DeleteSuccess", "Xóa thành công"},
            {"UpdateSuccess", "Cập nhật thành công"},
            
            // 警告消息
            {"TimeWarning", "Kỳ thi sắp kết thúc, vui lòng nộp bài sớm"},
            {"UnsavedWarning", "Bạn có thay đổi chưa lưu"},
            {"SessionExpire", "Phiên làm việc sắp hết hạn"}
        };

        /// <summary>
        /// 获取当前语言
        /// </summary>
        /// <returns></returns>
        public static string GetCurrentLanguage()
        {
            try
            {
                if (HttpContext.Current?.Session?["Culture"] != null)
                {
                    return HttpContext.Current.Session["Culture"].ToString();
                }

                // 默认返回中文
                return "zh-CN";
            }
            catch
            {
                return "zh-CN";
            }
        }

        /// <summary>
        /// 设置当前语言
        /// </summary>
        /// <param name="language"></param>
        public static void SetCurrentLanguage(string language)
        {
            try
            {
                if (HttpContext.Current?.Session != null)
                {
                    HttpContext.Current.Session["Culture"] = language;
                }
            }
            catch
            {
                // 忽略错误
            }
        }

        /// <summary>
        /// 获取文本翻译
        /// </summary>
        /// <param name="key">键名</param>
        /// <returns>翻译后的文本</returns>
        public static string GetText(string key)
        {
            return GetText(key, GetCurrentLanguage());
        }

        /// <summary>
        /// 获取指定语言的文本翻译
        /// </summary>
        /// <param name="key">键名</param>
        /// <param name="language">语言代码</param>
        /// <returns>翻译后的文本</returns>
        public static string GetText(string key, string language)
        {
            try
            {
                Dictionary<string, string> resources = language == "vi-VN" ? VietnameseResources : ChineseResources;

                if (resources.ContainsKey(key))
                {
                    return resources[key];
                }

                // 如果找不到键，返回键名本身
                return key;
            }
            catch
            {
                return key;
            }
        }

        /// <summary>
        /// 批量翻译文本数组
        /// </summary>
        /// <param name="keys">键名数组</param>
        /// <returns>翻译后的文本字典</returns>
        public static Dictionary<string, string> GetTexts(params string[] keys)
        {
            return GetTexts(GetCurrentLanguage(), keys);
        }

        /// <summary>
        /// 批量翻译指定语言的文本数组
        /// </summary>
        /// <param name="language">语言代码</param>
        /// <param name="keys">键名数组</param>
        /// <returns>翻译后的文本字典</returns>
        public static Dictionary<string, string> GetTexts(string language, params string[] keys)
        {
            var result = new Dictionary<string, string>();
            foreach (var key in keys)
            {
                if (!result.ContainsKey(key)) // 防止重复添加
                {
                    result[key] = GetText(key, language);
                }
            }
            return result;
        }

        /// <summary>
        /// 格式化翻译文本（支持参数替换）
        /// </summary>
        /// <param name="key">键名</param>
        /// <param name="args">参数</param>
        /// <returns>格式化后的翻译文本</returns>
        public static string GetTextFormat(string key, params object[] args)
        {
            string text = GetText(key);
            try
            {
                return string.Format(text, args);
            }
            catch
            {
                return text;
            }
        }

        /// <summary>
        /// 获取所有语言键值对
        /// </summary>
        /// <param name="language">语言代码</param>
        /// <returns>字典</returns>
        public static Dictionary<string, string> GetAllTexts(string language)
        {
            return language == "vi-VN" ? VietnameseResources : ChineseResources;
        }

        /// <summary>
        /// 检查键是否存在
        /// </summary>
        /// <param name="key">键名</param>
        /// <returns>是否存在</returns>
        public static bool ContainsKey(string key)
        {
            return ChineseResources.ContainsKey(key) || VietnameseResources.ContainsKey(key);
        }

        /// <summary>
        /// 安全地添加新的翻译键值对（运行时）
        /// </summary>
        /// <param name="key">键</param>
        /// <param name="chineseValue">中文值</param>
        /// <param name="vietnameseValue">越南文值</param>
        public static void AddTranslation(string key, string chineseValue, string vietnameseValue)
        {
            // 使用线程安全的方式添加
            lock (ChineseResources)
            {
                if (!ChineseResources.ContainsKey(key))
                {
                    ChineseResources[key] = chineseValue;
                }
            }

            lock (VietnameseResources)
            {
                if (!VietnameseResources.ContainsKey(key))
                {
                    VietnameseResources[key] = vietnameseValue;
                }
            }
        }
    }
}